Deployment
Project Extraction
-
First you have to extract the
whoxa.zipthen you will get three zip files.- whoxa_admin.zip
- whoxa_frontend.zip
- whoxa_backend.zip
Config file
-
Make a
config.jsoninsideconfigfolder of Project And add following content as per your PostgreSQL and Server Configuration{
"development": {
"username": "root",
"password": "",
"database": "whoxa",
"host": "127.0.0.1",
"dialect": "postgres"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "postgres"
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "postgres"
}
}
Backend ENV file configurations
- Make a
.envfile in the project on folder which containpackage.jsonwith following content. - If you already have
.envfile then only change below values, other values will be same.
TWILIO_AUTH_TOKEN=""
TWILIO_FROM_NUMBER=""
TWILIO_ACCOUNT_SID=""
baseUrl="http://localhost:3000/"
Frontend — Required Environment Variables
Create a .env file in the frontend project root. Key variables to configure:
| Variable | Description |
|---|---|
VITE_API_URL | Backend API base URL |
VITE_SOCKET_URL | Backend Socket.IO URL |
VITE_META_APP_ID | Meta App ID for Embedded Signup |
VITE_META_CONFIG_ID | Meta Config ID for Embedded Signup flow |
VITE_Google_MAP_KEY | Google Maps API key |
VITE_GOOGLE_CLIENT_ID | Google OAuth Client ID |
VITE_RAZORPAY_KEY_ID | Razorpay public key for payment modal |
VITE_GIPHY_API_KEY | Giphy API key |
VITE_IS_DEMO | Set to false for live deployments |
Server Starting
- Open Terminal on the location where
package.jsonis located. - Run following command to install dependencies
npm install
- After successful running of
npm installinstall global dependency to auto configure the DB related tasks by running following command.
npm install -g sequelize sequelize-cli
- To run server run following command within the terminal where
package.jsonis located.
npm run dev
Peer JS Installation
- Install
PeerJSglobally
npm install -g peer
- Run following command to run
peerserver on port 4001
peerjs --port 4001
Frontend Build & Deployment
Step 1: Update the .env File
Navigate to the frontend project root directory, open the .env file, update the required configuration values, and save.
Make sure all environment variables are correctly defined before proceeding to the next step.
Step 2: Install Dependencies & Create a Production Build
Open a terminal inside the frontend project root directory.
Run the following command to install dependencies:
yarn install
Run the following command to start the development server:
yarn dev
Or run the following command to create a production build:
yarn build
After the build process is completed, a dist folder will be generated. Verify that all the compiled files are available inside the dist folder.
Select all files inside the dist folder and create a .zip file containing those files.
Step 3: Replace Frontend Files in Backend Project
- Go to your backend project directory.
- Locate the folder named
frontend. - Delete all existing files inside the
frontendfolder. - Upload the newly created frontend
.zipfile into the backend project. - Extract (unzip) the files inside the
frontendfolder. - After extraction, all new build files should be present inside the backend
frontendfolder.
Step 4: Restart the Backend Project
npm run dev
Production Checklist
| Item | Action Required |
|---|---|
| HTTPS | SSL certificate on both frontend and API domains |
| Environment variables | All secrets in .env — never hardcoded or committed to git |
| NODE_ENV | Set to production in backend .env |
| IS_CLIENT | Set to true to disable demo guard and enable all mutations |
| Database backups | Set up automated PostgreSQL backups |
| Redis persistence | Enable Redis AOF/RDB persistence |
| Meta webhook URL | Must be HTTPS and publicly reachable |
| Stripe webhook | Register API URL in Stripe dashboard |
| Razorpay webhook | Register API URL in Razorpay dashboard |
| File uploads | Ensure upload directory has write permissions |
| Firewall | Only ports 80, 443, 22 open publicly — DB and Redis on localhost only |
Update / Redeploy
Backend:
- Pull the latest code.
- Run
npm installto update dependencies. - Run database migrations if required.
- Restart the server.
Frontend:
- Pull the latest code.
- Run
yarn installto update dependencies. - Run
yarn buildto create a new production build. - Replace the
frontendfolder in the backend project with the newdistfiles. - Restart the backend server.
Vercel Deployment (Frontend Only)
The frontend can be deployed to Vercel:
- Import the frontend repo in Vercel.
- Set all
VITE_*environment variables in Vercel project settings. - Build command:
yarn build - Output directory:
dist - Vercel handles HTTPS and CDN automatically.
The backend must still be deployed on a server because it requires PostgreSQL, Redis, and persistent file storage.
Open Webpages
Frontend will be at
http://{your_server_ip}:{port_on_which_server_is_running}/
Admin Panel will be at
http://{your_server_ip}:{port_on_which_server_is_running}/admin

There are no hardcoded default credentials. You set your own admin email and password in .env before first boot:
ADMIN_EMAIL=admin@yourdomain.com
ADMIN_PASSWORD=YourStrongPassword123!
The server creates the admin account automatically on first start using these values.
Log in at http://{your_server_ip}:{port}/admin with the email and password you set.
Change your password immediately after first login via Admin Panel → Profile Settings.
- email:
alicejohn@yopmail.com
- password:
123456